﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using Kaidou.Persister;
using Kaidou.Model;
using Kaidou.Util;


/**
 * ログインを管理するマネージャークラス
 */
namespace Kaidou.Bll
{
    public class LoginManager
    {
        public List<string> checkAuth(LoginModel M,System.Resources.ResourceManager rm)
        {
            InputErrorException ie = new InputErrorException(rm);
            ParameterCheckUtility.checkLoginAuth(ie, M, rm);
            return ie.getErrorMessages();
        }

        public MstUnion authUnion(LoginModel M,InputErrorException ie, System.Resources.ResourceManager rm)
        {
            MST_UnionPersister dao = new MST_UnionPersister();
            MstUnion union = dao.getDetail(M.Unioncode);
            if (union == null) {
				//ユーザーが見つからない
				LogManager.info("LoginManager - auth LOGIN_UID_UNKNOWN_USER");
                ie.addErrorCode(ErrorCodeDefine.LOGIN_UID_UNKNOWN_USER);
			}
			else if (StringUtil.STATUS_DELETE.Equals(union.UnionSts)) {
				//ユーザーは削除されている
                LogManager.info("LoginManager - auth LOGIN_UID_DELETE_USER");
                ie.addErrorCode(ErrorCodeDefine.LOGIN_UID_UNKNOWN_USER);
			}
            else if (!M.Password.Equals(union.Password))
            {
				//パスワードが違う
                LogManager.info("LoginManager - auth LOGIN_PASSWORD_IS_DIFFERS");
                ie.addErrorCode(ErrorCodeDefine.LOGIN_PASSWORD_IS_DIFFERS);
			}
            return union;
        }

        public mst_union_branch authBranch(LoginModel M, InputErrorException ie, System.Resources.ResourceManager rm)
        {
            MST_Union_BranchPersister dao = new MST_Union_BranchPersister();
            mst_union_branch union = dao.getDetail(M.Unioncode,M.Branchcode);
            if (union == null)
            {
                //ユーザーが見つからない
                LogManager.info("LoginManager - auth LOGIN_UID_UNKNOWN_USER");
                ie.addErrorCode(ErrorCodeDefine.LOGIN_UID_UNKNOWN_USER);
            }
            else if (StringUtil.STATUS_DELETE.Equals(union.unionsts))
            {
                //ユーザーは削除されている
                LogManager.info("LoginManager - auth LOGIN_UID_DELETE_USER");
                ie.addErrorCode(ErrorCodeDefine.LOGIN_UID_UNKNOWN_USER);
            }
            else if (!M.Password.Equals(union.password))
            {
                //パスワードが違う
                LogManager.info("LoginManager - auth LOGIN_PASSWORD_IS_DIFFERS");
                ie.addErrorCode(ErrorCodeDefine.LOGIN_PASSWORD_IS_DIFFERS);
            }
            return union;
        }
    }
}
